package system

import (
	"net/http"
	"woo-server/controllers"
	"woo-server/services/system"

	"github.com/gin-gonic/gin"
)

// @tags 用户
// @summary 获取登录用户信息
// @Description 获取登录用户信息
// @Accept json
// @Success 200 {string} json "{"StatusCode":200,"IsEncrypted":false,"Data":""}"
// @Router /api/user/GetLoginUserInfo [get]
func LoginUserInfo(c *gin.Context) {

	// common
	com := controllers.NewCommon(c, "GetLoginUserInfo")

	svr := system.NewUserService(com)
	result := svr.GetLoginUserInfo()
	c.String(http.StatusOK, result.ToJson())
}

func UserConfig(c *gin.Context) {
	// common
	com := controllers.NewCommon(c, "GetUserConfig")

	// 生成service
	Service := system.NewUserService(com)
	result := Service.GetUserConfig()

	// 返回
	c.JSON(http.StatusOK, result)
}

func UpdateUserInfo(c *gin.Context) {
	// common
	com := controllers.NewCommon(c, "UpdateUserInfo")

	// 生成service
	Service := system.NewUserService(com)
	result := Service.UpdateUserInfo()

	// 返回
	c.JSON(http.StatusOK, result)
}

func ReloadRole(c *gin.Context) {
	// common
	com := controllers.NewCommon(c, "reloadRole")

	// 生成service
	Service := system.NewUserService(com)
	result := Service.ReloadRole()

	// 返回
	c.JSON(http.StatusOK, result)
}

// @tags 后台角色列表
// @summary 后台角色管理
// @Description 后台角色列表
// @Accept json
// @Success 200 {string} json "{"StatusCode":200,"Data":""}"
// @Router /Menu/List [get]
func UserList(c *gin.Context) {
	// common
	com := controllers.NewCommon(c, "GetUserList")

	// 生成登录态
	Service := system.NewUserService(com)
	result := Service.GetList(c)

	// 返回
	c.JSON(http.StatusOK, result)
}

// @tags 后台角色
// @summary 后台角色配置
// @Description 后台角色管理列表配置项
// @Accept json
// @Success 200 {string} json "{"StatusCode":200,"Data":""}"
// @Router //Save [get]
func UserSave(c *gin.Context) {
	// common
	com := controllers.NewCommon(c, "PostSave")

	// 生成service
	Service := system.NewUserService(com)
	result := Service.PostSave(c)

	// 返回
	c.JSON(http.StatusOK, result)
}

// @tags 后台角色
// @summary 删除角色
// @Description 后台角色管理--删除角色
// @Accept json
// @Success 200 {string} json "{"StatusCode":200,"Data":""}"
// @Router //Save [get]
func UserDelete(c *gin.Context) {
	// common
	com := controllers.NewCommon(c, "PostSave")

	// 生成service
	Service := system.NewUserService(com)
	result := Service.Delete(c)

	// 返回
	c.JSON(http.StatusOK, result)
}
